package class01;

public class Code09_ChoiceSort {
    // 快排递归版本
    public static void quickSort1(int[] arr) {
        if (arr == null || arr.length < 2) {
            return;
        }
        process(arr, 0, arr.length - 1);
    }

    public static void process(int[] arr, int L, int R) {
//        if (L >= R) {
//            return;
//        }
        /**
         * 此时充分利用了 快排和插入排序的性能
         * 针对大基数的数组快排具备优势
         * 针对小基数 因为插入排序常数项优势更明显所以采用插入排序
         */
        if (L + 60 > R) {
            insertionSort(arr);
        }
        swap(arr, L + (int) (Math.random() * (R - L + 1)), R);
        int[] equalArea = netherlandsFlag(arr, L, R);
        process(arr, L, equalArea[0] - 1);
        process(arr, equalArea[1] + 1, R);
    }

    public static void swap(int[] arr, int L, int R) {

    }

    static int[] netherlandsFlag(int[] arr, int L, int R) {
        return new int[]{};
    }

    public static void insertionSort(int[] arr) {
    }
}
